<?php
/**
 * 维修记录审批
 * Created by PhpStorm.
 * User: LRChang
 * Date: 2018/5/31
 * Time: 17:06
 * Mail: hjklrchang@qq.com
 */

namespace app\adminapi\controller;

use app\adminapi\model\Common;
use app\adminapi\model\MaintenanceApprove as MaintenanceApproveModel;
use app\adminapi\validate\MaintenanceApproveValidate;

/**
 * @name【维修记录审批信息管理】
 * @baseurl【adminapi/Maintenanceapprove】
 * @file【Maintenanceapprove.php】
 */
class Maintenanceapprove extends Base {
    /**
     * @name【维修记录审批信息列表】
     * @desc【维修记录审批信息列表】
     * @uri【approveList】
     * @method【post】
     * @param【
     * fields $ string $ approve_id $ 字段名称 #
     * where_json $ json $ {"approve_id":["in","6,7,8"]} $ 查询条件 #
     * page $ int $ 1$ 页数 #
     * pagenum $ int $ 20 $记录数
     * 】
     * @return【
     * code $ int $ number|1-1 $ 标识1-成功 0-失败#
     * msg $ string $  $ code=0，错误信息#
     * count $ int $ 100 $ 结果总数 #
     * list $ json $ $ 维修记录审批信息列表 #
     * description $ json $ $ 接口说明
     * 】
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function approveList(){
        // 校验请求参数
        $validate = new MaintenanceApproveValidate();
        // 获取所有请求参数
        $params = $validate->scene('list')->goCheck()->getCurrentData();

        $where = json_decode($params['where_json'], true);

        $result =( new MaintenanceApproveModel() )->listData($where, $params['fields'], $params['page'], $params['pagenum']);

        return $this->retSucc($result);
    }

    /**
     * @name【新增维修记录审批信息】
     * @desc【新增维修记录审批信息】
     * @uri【add】
     * @method【post】
     * @param【
     * maintenance_record_id $ int $ 10 $ 维修记录ID $ 1 #
     * company_id $ int $ 10 $ 所属单位ID $ 1 #
     * maintenance_id $ int $ 10 $ 维修厂ID $ 1 #
     * maintenance_time $ string $ 2018-05-30 21:26:00 $ 送修时间 $ 1 #
     * contact_person $ string $ 奥巴马 $ 送修人 $ 1 #
     * contact_number $ string $  $ 联系电话 $ 1 #
     * kilometers $ string $  $ 送修公里数 $ 1 #
     * maintenance_desc $ string $  维修大灯 $ 送修项目或故障现象#
     * remark $ string $  保险丝熔断 $ 备注#
     * material_cost_info $ json $  [{"material_name":"后视镜", "material_type": "", "supplier":"", "tel": "", "unit":"个", "num": 1, "price": 200, "total": 0}] $ 材料费用信息（json数组） $ 1 #
     * working_hours $ json $  [{"working_name":"钣金","price": 129,"hour": 2,"total":0}] $ 工时费用信息（json数组） $ 1 #
     * approve_person $ string $  王小明 $ 审批人 $ 1 #
     * approve_orgn $ string $ 厦门xxx街道办事处 $ 审批单位名称 $ 1 #
     * approve_status $ string $ 3 $ 审批状态，‘1’：未审批；‘2’：审批中；‘3’：审批通过；‘4’：审批不通过； $ 1 #
     * approve_desc $ string $ 请尽快处理 $ 审批说明 #
     * 】
     * @return【
     * code $ int $ number|1-1 $ 标识1-成功 0-失败#
     * msg $ string $  $ code=0，错误信息#
     * approve_id $ int $ 1 $ 新增成功的维修记录审批信息ID#
     * 】
     * @throws \app\base\exception\RecordNotFoundException
     * @throws \think\exception\DbException
     */
    public function add(){
        // 校验请求参数
        $validate = new MaintenanceApproveValidate();
        // 获取所有请求参数
        $params = $validate->scene('add')->goCheck()->getCurrentData();

        $approve = (new MaintenanceApproveModel()) ->createOrUpdate($params);

        return $this->retSucc(['approve_id' => $approve->approve_id]);
    }

    /**
     * @name【编辑维修记录审批信息】
     * @desc【编辑维修记录审批信息】
     * @uri【edit】
     * @method【post】
     * @param【
     * approve_id $ int $ 1 $ 维修记录审批信息ID $ 1 #
     * maintenance_record_id $ int $ 10 $ 维修记录ID $ 1 #
     * company_id $ int $ 10 $ 所属单位ID $ 1 #
     * maintenance_id $ int $ 10 $ 维修厂ID $ 1 #
     * maintenance_time $ string $ 2018-05-30 21:26:00 $ 送修时间 $ 1 #
     * contact_person $ string $ 奥巴马 $ 送修人 $ 1 #
     * contact_number $ string $  $ 联系电话 $ 1 #
     * kilometers $ string $  $ 送修公里数 $ 1 #
     * maintenance_desc $ string $  维修大灯 $ 送修项目或故障现象#
     * remark $ string $  保险丝熔断 $ 备注#
     * material_cost_info $ json $  [{"material_name":"后视镜", "material_type": "", "supplier":"", "tel": "", "unit":"个", "num": 1, "price": 200, "total": 0}] $ 材料费用信息（json数组） $ 1 #
     * working_hours $ json $  [{"working_name":"钣金","price": 129,"hour": 2,"total":0}] $ 工时费用信息（json数组） $ 1 #
     * approve_person $ string $  王小明 $ 审批人 $ 1 #
     * approve_orgn $ string $ 厦门xxx街道办事处 $ 审批单位名称 $ 1 #
     * approve_status $ string $ 3 $ 审批状态，‘1’：未审批；‘2’：审批中；‘3’：审批通过；‘4’：审批不通过； $ 1 #
     * approve_desc $ string $ 请尽快处理 $ 审批说明 #
     * 】
     * @return【
     * code $ int $ number|1-1 $ 标识1-成功 0-失败#
     * msg $ string $  $ code=0，错误信息#
     * updated $ int $  1 $ 更新记录条数#
     * 】
     * @throws \app\base\exception\RecordNotFoundException
     * @throws \think\exception\DbException
     */
    public function edit(){
        // 校验请求参数
        $validate = new MaintenanceApproveValidate();
        // 获取所有请求参数
        $params = $validate->scene('edit')->goCheck()->getCurrentData();

        $result = (new MaintenanceApproveModel()) ->createOrUpdate($params);

        return $this->retSucc(['updated' => $result]);
    }

    /**
     * @name【删除维修记录审批信息】
     * @desc【删除维修记录审批信息】
     * @uri【delete】
     * @method【post】
     * @param【
     * approve_ids $ int $ 1 $ 维修记录审批信息ID，多个请用','号连接 $ 1 #
     * 】
     * @return【
     * code $ int $ number|1-1 $ 标识1-成功 0-失败#
     * msg $ string $  $ code=0，错误信息#
     * deleted $ int $  1 $ 删除的记录条数#
     * 】
     */
    public function delete(){
        // 校验请求参数
        $validate = new MaintenanceApproveValidate();
        // 获取所有请求参数
        $params = $validate->scene('delete')->goCheck()->getCurrentData();

        $where = ['approve_id' => ['IN', explode(',', $params['approve_ids'])]];
        $buildQuery = function($query) use ($where) {
            Common::authCompanyQuery($query, $where, 'company_id');
        };

        $result = MaintenanceApproveModel::destroy($buildQuery);

        return $this->retSucc(['deleted' => $result]);
    }
}